The configuration of a computer is driven primarily by information contained on a persistent storage device, such as a disk drive, to which the computer is coupled. Although two distinct computers can have different processors, or other different hardware components, such as a BIOS ROM for example, for the most part, if the computers share a common processor architecture, their observed behavior will be determined by such things as the operating system which is booted when the computer is turned on, the settings in various configuration files, and the application software which is available, all of which is determined by data on the disk drive.
In certain environments, such as an office, a training laboratory, or a testing laboratory, for example, many computers are coupled to a network, and each computer is used for primarily the same purpose. In such environments, it is frequently useful if the computers are configured nearly identically.
For instance, in an office environment, many companies have found it necessary to hire staff whose primary function is to help computer users with day-to-day problems encountered with their computer. The cost of such staff can be substantial because of the relatively high salary costs of good computer support personnel. Of course, the less computer problems encountered, the less support personnel are required. One way to reduce such support costs is to configure each computer as identically as possible, so problems encountered by any one individual are likely to be the same problems encountered by other individuals. After determining the solution to a problem once, the same solution can be implemented in a relatively quick manner for anyone else encountering the problem. This greatly reduces the problem analysis time required, which is frequently the most expensive component of solving computer-related problems. In fact, if computer environments are all highly similar, frequently once a user learns of a solution to a problem, they can alert co-workers to the solution without the need to even contact a computer support person.
Such commonly configured computer environments are also useful in a training environment. Training laboratories are widely used to teach the use of computer software to a number of computer users at the same time. Because of the complexity of software and the continuous release of new and enhanced computer software products, computer software training is an economically important business. A training laboratory is typically a room with many computers coupled to a network, to allow each student to have hands-on experience with the software on which they are being trained. Since the very nature of training implies a lack of familiarity with the software among the students, it is not uncommon for a trainer to spend a great deal of time answering problems encountered by the students while they attempt to use the software. So that each student is exposed to the same operating behavior of the software, the trainer will typically configure each computer with a common environment which the trainer has determined best facilitates teaching the proper use of the software to the students. In addition to the consistent behavior gained by having common computer environments, it is likely that students using computers with common computer environments will encounter some of the same difficulties, so a trainer can answer a question once, and each student can benefit from the answer.
A testing laboratory is yet another environment in which commonly configured computers can be useful. Developers of software frequently wish to stress-test, or otherwise test their software, which requires an environment in which a number of computers all simultaneously access the tested software. Because the focus of the test may be its ability to handle a large volume of transactions, or its ability to handle multiple users, for example, it is desirable that the computers used in the test environment are configured as nearly identically as possible, so that any problems encountered can be isolated either to the common configuration, or the software itself, and individual computers need not each be analyzed to determine if a single computer configuration is the cause of a problem.
The difficulty in creating common computer environments is not in configuring the disk drives of computers in an identical manner, but rather is in the process of uniquely tailoring each computer configuration so it can have a separate identity from the other computers. This is necessary because each computer environment must have certain unique data which uniquely identify either the computer itself, or the user of the computer. For example, each computer coupled to a TCP/IP network must have a unique IP identifier so messages can be properly delivered to the computer over the network. The IP identifier is typically stored locally on the disk drive of the computer. A logon program will frequently require entry of a unique user identifier and a password before access will be given to a network server, to establish the access level a particular user has to the resources on the server. The user identifier can be stored in a file on the local disk drive. Similarly, the computer operating system may require entry of a unique user identifier and password before access to the computer will be permitted. Such user identifier and password may be stored on the local hard drive. Another example relates to computer programs, which typically have a configuration file, such as a `.INI` file, which can contain data which must be unique to each user on a network.
Conventional methods for applying these unique identifiers to each computer environment involve manually editing and storing the appropriate tailoring information on each computer. This can be extremely time-consuming, and like all manual processes, fraught with the potential for errors, for which computers typically have little tolerance. The amount of time it takes to apply unique identifiers to each computer can be very important in environments which require rapid reconfigurations of computers, such as the training and testing environments discussed above. Because such training laboratories can be relatively expensive to create and maintain, each training laboratory is typically used to teach many different software courses. Thus, the configuration of computers used to teach students one operating system today will be quite different from the configuration of the same computers used to teach students another operating system tomorrow. Some training environments include hundreds of computers, and uniquely tailoring each of the computer environments for each new training class is a massive and time-consuming effort. Further, such an effort can require additional personnel which increases the cost of training, and frequently prevents a rapid transition from one training environment to another training environment, which can result in a loss of revenue while the training environment is being reconfigured.
It is apparent that an automated process for tailoring common computer environments in a quick and reliable manner would be desirable.